Source code for src.cmd.new

import os, sys
from ..util import check_file, capture_input
from ..configuration import config, db_info
from ..run import run_new

[docs]def new_project(cmd): """Creates a new project. @param args: The command line parameters. As listed under cchrrrd.py new_project -h the following command line parameters are accepted by new_project. name: The name of the project. project_dir: The path to the top level directory for the BJSConvert output. in_dir: The path to the directory containing the NLETS raw bar delimited segment files and the spss sample file *(required)*. meta_dir: The path to the directory containing the project metadata files. Default: **root_dir**/bjs_rules/metadata. rule_dir: The path to the directory containing the project rules. Default: **root_dir**/bjs_rules/rules. follow_period: The number of years after the date of release arrest to include in the recidivism database and flat files. threads: The number of threads to use when running the recidivism transform phase. Default: 250 cores: The number of cores the system has available to use. Default: 4 verbose: A debug option to set debug logging to verbose. Default: False host: Name of database host to connect to. Default: localhost. port: TCP port of MySQL server. Default: standard port (3306). db_stand_name: Name of standardized database. Default: **project name** db_stand_user: The user to authenticate as. Default: root. db_stand_pass: The password to authenticate with. Default: pass. db_recid_name: Name of recidivism database. Default: **project name**_recid db_recid_user: The user to authenticate as. Default: root. db_recid_pass: The password to authenticate with. Default: pass. """ args = cmd.args #if no project name added ask user for the name if not args.name: while True: args.name = capture_input('Please enter the name of the project\n>>> ', **{'required':True}) if os.path.isdir(os.path.join(args.project_dir, 'project_data', str(args.name))): print 'Project already exists, try a different name.' else: break if not args.follow_period: args.follow_period = capture_input('Please enter the number of years for the follow-up window\n>>> ', int_range=(0,99)) #if no project directory argument supplied get from user if not args.project_dir: args.project_dir = os.path.join(config.root_dir) if not os.path.isdir(args.project_dir): os.makedirs(args.project_dir) _db_s = args.db_stand_name if args.db_stand_name else args.name _db_r = '%s_recid' % (args.db_stand_name if args.db_stand_name else args.name) for dir in (args.project_dir, args.in_dir, args.metadata_dir, args.rule_dir): if dir: check_file(dir, as_dir = True) opt = {'name': args.name, 'root_dir': args.project_dir, 'in_dir': args.in_dir, 'meta_dir': args.metadata_dir, 'rule_dir': args.rule_dir, 'threads': args.threads, 'cores': args.cores, 'verbose': args.verbose, 'host': args.host, 'port': args.port, 'follow_period': args.follow_period, 'db_stand_name': _db_s, 'db_recid_name': _db_r, } run_new(**opt)